Ma’lumotlarni tahlil qilish uchun Pandas GroupBy kuchini oching. Ushbu qo‘llanma xalqaro ma’lumotlar uchun amaliy misollar bilan agregatsiya va transformatsiya usullarini o‘rganadi.
Pandas GroupBy Operatsiyalarini Mukammal Egallash: Agregatsiya va Transformatsiya
Python-da ma'lumotlar bilan ishlashning asosiy toshi bo'lgan Pandas, ma'lumotlarni tahlil qilish va tushunish uchun kuchli vositani taklif etadi: GroupBy operatsiyasi. Ushbu xususiyat ma'lumotlaringizni umumiy xususiyatlarga asoslangan guruhlarga segmentlash va keyin ushbu guruhlarga funktsiyalarni qo'llash imkonini beradi va aks holda yashirin bo'lib qoladigan tushunchalarni ochib beradi. Ushbu maqola ikkita asosiy GroupBy operatsiyasini chuqur o'rganadi: agregatsiya va transformatsiya, butun dunyo bo'ylab ma'lumotlar bo'yicha mutaxassislar uchun mos amaliy misollar va tushuntirishlar beradi.
GroupBy Konsepsiyasini Tushunish
Aslida, GroupBy uchta asosiy bosqichni o'z ichiga olgan jarayon: ma'lumotlarni bir yoki bir nechta mezonlar asosida guruhlarga bo'lish, har bir guruhga mustaqil ravishda funktsiyani qo'llash va natijalarni yangi ma'lumotlar tuzilmasiga birlashtirish. Ushbu "bo'lish-qo'llash-birlashtirish" strategiyasi ma'lumotlarni tahlil qilishda fundamental tushunchadir va murakkab ma'lumotlar to'plamlarini o'rganish uchun moslashuvchan asosni ta'minlaydi.
GroupByning kuchi turli xil ma'lumotlar turlari va tuzilmalarini boshqarish qobiliyatida yotadi, bu uni turli sohalarda qo'llash imkonini beradi. Siz bir nechta hududlardan savdo ma'lumotlarini, turli xil qurilmalardan sensor ko'rsatkichlarini yoki demografik ko'rsatkichlar bo'yicha ijtimoiy media faoliyatini tahlil qilyapsizmi, GroupBy sizga mazmunli tushunchalarni olishga yordam beradi.
Agregatsiya: Guruhlar Ichidagi Ma'lumotlarni Jamlash
Agregatsiya - bu har bir guruh uchun jamlovchi statistikani hisoblash jarayoni. Ushbu statistika guruhning xususiyatlari haqida qisqacha ma'lumot beradi, bu sizning ma'lumotlaringizning turli segmentlarini solishtirish va taqqoslash imkonini beradi. Umumiy agregatsiya funktsiyalari quyidagilarni o'z ichiga oladi:
sum(): Har bir guruhdagi qiymatlar yig'indisini hisoblaydi.mean(): Har bir guruhdagi o'rtacha qiymatni hisoblaydi.median(): Har bir guruhdagi o'rta qiymatni hisoblaydi.min(): Har bir guruhdagi minimal qiymatni topadi.max(): Har bir guruhdagi maksimal qiymatni topadi.count(): Har bir guruhdagi null bo'lmagan qiymatlar sonini hisoblaydi.size(): Har bir guruhning hajmini (null qiymatlarni ham qo'shib) qaytaradi.std(): Har bir guruhdagi standart og'ishni hisoblaydi.var(): Har bir guruhdagi dispersiyani hisoblaydi.
Agregatsiyaning Amaliy Misollari
Keling, faraziy elektron tijorat kompaniyasi uchun xalqaro savdo ma'lumotlarining ma'lumotlar to'plamini ko'rib chiqaylik. Ma'lumotlar mahsulot kategoriyasi, savdo mamlakati va savdo miqdori haqidagi ma'lumotlarni o'z ichiga oladi.
import pandas as pd
# Namuna ma'lumotlar
data = {
'Category': ['Electronics', 'Clothing', 'Electronics', 'Clothing', 'Home Goods', 'Electronics', 'Clothing', 'Home Goods'],
'Country': ['USA', 'UK', 'Canada', 'USA', 'Germany', 'UK', 'Canada', 'Germany'],
'Sales': [100, 50, 75, 60, 80, 90, 45, 70]
}
df = pd.DataFrame(data)
print(df)
Bu quyidagini chiqaradi:
Category Country Sales
0 Electronics USA 100
1 Clothing UK 50
2 Electronics Canada 75
3 Clothing USA 60
4 Home Goods Germany 80
5 Electronics UK 90
6 Clothing Canada 45
7 Home Goods Germany 70
1-Misol: Har Bir Kategoriya Bo'yicha Umumiy Sotuvlarni Hisoblash
Har bir mahsulot kategoriyasi uchun umumiy sotuvlarni hisoblash uchun biz groupby() usulidan keyin sum() agregatsiya funktsiyasidan foydalanishimiz mumkin.
category_sales = df.groupby('Category')['Sales'].sum()
print(category_sales)
Bu quyidagini chiqaradi:
Category
Clothing 155
Electronics 265
Home Goods 150
Name: Sales, dtype: int64
2-Misol: Har Bir Mamlakat Bo'yicha O'rtacha Sotuvlarni Hisoblash
Xuddi shunday, har bir mamlakat bo'yicha o'rtacha sotuvlarni hisoblash uchun biz mean() agregatsiya funktsiyasidan foydalanishimiz mumkin.
country_sales = df.groupby('Country')['Sales'].mean()
print(country_sales)
Bu quyidagini chiqaradi:
Country
Canada 60.0
Germany 75.0
UK 70.0
USA 80.0
Name: Sales, dtype: float64
3-Misol: Bir Nechta Agregatsiya Funktsiyalaridan Foydalanish
Pandas sizga agg() usuli yordamida bir vaqtning o'zida bir nechta agregatsiya funktsiyalarini qo'llash imkonini beradi. Bu guruh xususiyatlarining keng qamrovli umumiy ma'lumotini beradi.
category_summary = df.groupby('Category')['Sales'].agg(['sum', 'mean', 'median', 'count'])
print(category_summary)
Bu quyidagini chiqaradi:
sum mean median count
Category
Clothing 155 51.666667 50.0 3
Electronics 265 88.333333 90.0 3
Home Goods 150 75.000000 75.0 2
4-Misol: Maxsus Agregatsiya Funktsiyalari
Lambda ifodalari yoki nomlangan funktsiyalar yordamida o'zingizning shaxsiy agregatsiya funktsiyalaringizni ham belgilashingiz mumkin. Bu sizga standart agregatsiya funktsiyalarida mavjud bo'lmagan muayyan statistikani hisoblash imkonini beradi.
# Diapazonni (max - min) hisoblash uchun maxsus funktsiya
def custom_range(x):
return x.max() - x.min()
category_summary = df.groupby('Category')['Sales'].agg(['sum', 'mean', custom_range])
print(category_summary)
Bu quyidagini chiqaradi:
sum mean custom_range
Category
Clothing 155 51.666667 15
Electronics 265 88.333333 25
Home Goods 150 75.000000 10
Transformatsiya: Guruhlar Ichidagi Ma'lumotlarni O'zgartirish
Transformatsiya, aksincha, har bir guruh ichidagi ma'lumotlarni ba'zi bir hisoblash asosida o'zgartirishni o'z ichiga oladi. Har bir guruh uchun umumlashtirilgan qiymatni qaytaradigan agregatsiyadan farqli o'laroq, transformatsiya asl ma'lumotlardagi har bir qator uchun qiymatni qaytaradi, ammo qiymat shu qator tegishli bo'lgan guruh asosida hisoblanadi. Transformatsiya operatsiyalari DataFrame-ning asl indeksini va shaklini saqlaydi.
Transformatsiyaning umumiy foydalanish holatlari quyidagilarni o'z ichiga oladi:
- Har bir guruh ichidagi ma'lumotlarni standartlashtirish.
- Har bir guruh ichida daraja yoki foizni hisoblash.
- Guruh statistikasi asosida etishmayotgan qiymatlarni to'ldirish.
Transformatsiyaning Amaliy Misollari
Keling, xalqaro savdo ma'lumotlarimiz bilan davom etamiz. Biz har bir mamlakatdagi savdo ko'rsatkichlari bilan bog'liq hisob-kitoblarni amalga oshirish uchun transformatsiyani qo'llashimiz mumkin.
1-Misol: Har Bir Mamlakat Ichidagi Sotuv Ma'lumotlarini Standartlashtirish (Z-ball)
Ma'lumotlarni standartlashtirish qiymatlarni o'rtacha 0 va standart og'ish 1 bo'lishi uchun o'zgartirishni o'z ichiga oladi. Bu turli xil masshtablar va taqsimotlar bo'yicha ma'lumotlarni solishtirish uchun foydalidir. Bunga erishish uchun transform() usuli bilan birga lambda ifodasidan foydalanishimiz mumkin.
from scipy.stats import zscore
df['Sales_Zscore'] = df.groupby('Country')['Sales'].transform(zscore)
print(df)
Bu quyidagini chiqaradi:
Category Country Sales Sales_Zscore
0 Electronics USA 100 1.000000
1 Clothing UK 50 -1.000000
2 Electronics Canada 75 1.000000
3 Clothing USA 60 -1.000000
4 Home Goods Germany 80 1.000000
5 Electronics UK 90 1.000000
6 Clothing Canada 45 -1.000000
7 Home Goods Germany 70 -1.000000
Sales_Zscore ustuni endi har bir mamlakat uchun standartlashtirilgan savdo qiymatlarini o'z ichiga oladi. 0 dan yuqori qiymatlar ushbu mamlakat uchun o'rtacha savdodan yuqori, 0 dan past qiymatlar esa o'rtachadan past.
2-Misol: Har Bir Kategoriya Ichida Sotuv Darajasini Hisoblash
Har bir savdoning o'z kategoriyasi ichidagi darajasini hisoblash uchun biz transform() funktsiyasi ichida rank() usulidan foydalanishimiz mumkin.
df['Sales_Rank'] = df.groupby('Category')['Sales'].transform(lambda x: x.rank(method='dense'))
print(df)
Bu quyidagini chiqaradi:
Category Country Sales Sales_Zscore Sales_Rank
0 Electronics USA 100 1.000000 3.0
1 Clothing UK 50 -1.000000 2.0
2 Electronics Canada 75 1.000000 1.0
3 Clothing USA 60 -1.000000 3.0
4 Home Goods Germany 80 1.000000 2.0
5 Electronics UK 90 1.000000 2.0
6 Clothing Canada 45 -1.000000 1.0
7 Home Goods Germany 70 -1.000000 1.0
Sales_Rank ustuni har bir savdoning tegishli kategoriyasi ichidagi darajasini ko'rsatadi. `method='dense'` argumenti ketma-ket darajalarning bo'shliqlarsiz belgilanishini ta'minlaydi.
3-Misol: Guruh O'rtacha Ko'rsatkichiga Asoslangan Holda Yetishmayotgan Qiymatlarni To'ldirish
Keling, sotuv ma'lumotlariga ba'zi yetishmayotgan qiymatlarni kiritamiz va keyin ularni har bir mamlakat uchun o'rtacha savdo asosida to'ldiramiz.
import numpy as np
# Yetishmayotgan qiymatlarni kiritish
df.loc[[0, 3], 'Sales'] = np.nan
print(df)
# Mamlakat o'rtacha ko'rsatkichiga asoslangan holda yetishmayotgan qiymatlarni to'ldirish
df['Sales_Filled'] = df['Sales'].fillna(df.groupby('Country')['Sales'].transform('mean'))
print(df)
Yetishmayotgan qiymatlarga ega bo'lgan dastlabki DataFrame quyidagicha ko'rinadi:
Category Country Sales Sales_Zscore Sales_Rank
0 Electronics USA NaN 1.000000 3.0
1 Clothing UK 50 -1.000000 2.0
2 Electronics Canada 75 1.000000 1.0
3 Clothing USA NaN -1.000000 3.0
4 Home Goods Germany 80 1.000000 2.0
5 Electronics UK 90 1.000000 2.0
6 Clothing Canada 45 -1.000000 1.0
7 Home Goods Germany 70 -1.000000 1.0
Va yetishmayotgan qiymatlarni to'ldirgandan so'ng:
Category Country Sales Sales_Zscore Sales_Rank Sales_Filled
0 Electronics USA NaN 1.000000 3.0 NaN
1 Clothing UK 50 -1.000000 2.0 50.0
2 Electronics Canada 75 1.000000 1.0 75.0
3 Clothing USA NaN -1.000000 3.0 NaN
4 Home Goods Germany 80 1.000000 2.0 80.0
5 Electronics UK 90 1.000000 2.0 90.0
6 Clothing Canada 45 -1.000000 1.0 45.0
7 Home Goods Germany 70 -1.000000 1.0 70.0
Muhim Eslatma: `USA` uchun mavjud o'rtacha ko'rsatkich bo'lmaganligi sababli, `Sales_Filled`dagi natijaviy qiymatlar `NaN` bo'ladi. Bunday chekka holatlarni hal qilish ishonchli ma'lumotlarni tahlil qilish uchun juda muhimdir va amalga oshirish paytida ko'rib chiqilishi kerak.
Agregatsiya va Transformatsiya: Asosiy Farqlar
Agregatsiya va transformatsiya ikkalasi ham kuchli GroupBy operatsiyalari bo'lsa-da, ular turli maqsadlarga xizmat qiladi va o'ziga xos xususiyatlarga ega:
- Chiqish Shakli: Agregatsiya ma'lumotlar hajmini kamaytiradi, har bir guruh uchun bitta qiymatni qaytaradi. Transformatsiya asl ma'lumotlar hajmini saqlaydi, har bir qator uchun o'zgartirilgan qiymatni qaytaradi.
- Maqsadi: Agregatsiya ma'lumotlarni jamlash va guruh xususiyatlari haqida tushuncha olish uchun ishlatiladi. Transformatsiya guruhlar ichidagi ma'lumotlarni o'zgartirish uchun, ko'pincha standartlashtirish yoki normallashtirish uchun ishlatiladi.
- Qaytish Qiymati: Agregatsiya agregatsiyalangan qiymatlarga ega yangi DataFrame yoki Seriesni qaytaradi. Transformatsiya transformatsiyalangan qiymatlarga ega Seriesni qaytaradi, uni keyin asl DataFrame-ga yangi ustun sifatida qo'shish mumkin.
Agregatsiya va transformatsiya o'rtasida tanlov sizning aniq analitik maqsadlaringizga bog'liq. Agar siz ma'lumotlarni jamlash va guruhlarni solishtirishingiz kerak bo'lsa, agregatsiya mos tanlovdir. Agar siz asl ma'lumotlar tuzilmasini saqlab qolgan holda guruhlar ichidagi ma'lumotlarni o'zgartirishingiz kerak bo'lsa, transformatsiya yaxshiroq variant.
Kengaytirilgan GroupBy Texnikalari
Asosiy agregatsiya va transformatsiyadan tashqari, Pandas GroupBy yanada murakkab ma'lumotlarni tahlil qilish uchun bir qator kengaytirilgan usullarni taklif etadi.
apply() Bilan Maxsus Funktsiyalarni Qo'llash
apply() usuli eng ko'p moslashuvchanlikni ta'minlaydi va har bir guruhga har qanday maxsus funktsiyani qo'llash imkonini beradi. Ushbu funktsiya har qanday operatsiyani, shu jumladan agregatsiya, transformatsiya yoki hatto yanada murakkab hisob-kitoblarni amalga oshirishi mumkin.
def custom_function(group):
# Agar guruhda bir nechta qator bo'lsa, guruhdagi har bir kategoriya uchun sotuvlar yig'indisini hisoblang
if len(group) > 1:
group['Sales_Sum'] = group['Sales'].sum()
else:
group['Sales_Sum'] = 0 # Yoki boshqa standart qiymat
return group
df_applied = df.groupby('Country').apply(custom_function)
print(df_applied)
Ushbu misolda biz har bir guruh (mamlakat) ichidagi savdolar yig'indisini hisoblaydigan maxsus funktsiyani belgilaymiz. apply() usuli ushbu funktsiyani har bir guruhga qo'llaydi, natijada shu guruh uchun savdolar yig'indisini o'z ichiga olgan yangi ustun paydo bo'ladi.
Muhim Eslatma: apply funktsiyasi boshqa usullarga qaraganda ko'proq hisoblashni talab qilishi mumkin. Katta ma'lumotlar to'plamlari bilan ishlashda kodingizni optimallashtiring va muqobil echimlarni ko'rib chiqing.
Bir Nechta Ustun Bo'yicha Guruhlash
Yanada nozik segmentlarni yaratish uchun ma'lumotlaringizni bir nechta ustun bo'yicha guruhlashingiz mumkin. Bu sizga ma'lumotlarni bir nechta xususiyatlarning kesishmasiga asoslangan holda tahlil qilish imkonini beradi.
category_country_sales = df.groupby(['Category', 'Country'])['Sales'].sum()
print(category_country_sales)
Bu ma'lumotlarni ham Category, ham Country bo'yicha guruhlaydi, bu esa har bir mamlakat ichidagi har bir kategoriya uchun umumiy sotuvlarni hisoblash imkonini beradi. Bu turli mintaqalar va mahsulot liniyalari bo'ylab savdo ko'rsatkichlarining batafsilroq ko'rinishini ta'minlaydi.
Guruhlar Bo'ylab Iteratsiya
Murakkabroq tahlil qilish uchun siz guruhlar bo'ylab for tsikli yordamida iteratsiya qilishingiz mumkin. Bu sizga har bir guruhga individual tarzda kirish va unga maxsus operatsiyalarni bajarish imkonini beradi.
for name, group in df.groupby('Category'):
print(f"Category: {name}")
print(group)
Bu har bir mahsulot kategoriyasi bo'ylab iteratsiya qiladi va tegishli ma'lumotlarni chop etadi. Bu har bir kategoriya uchun maxsus tahlil o'tkazish yoki hisobotlar yaratish uchun foydali bo'lishi mumkin.
GroupBy-dan Foydalanish Bo'yicha Eng Yaxshi Amaliyotlar
GroupBy-dan samarali va ta'sirchan foydalanishni ta'minlash uchun quyidagi eng yaxshi amaliyotlarni ko'rib chiqing:
- Ma'lumotlaringizni Tushuning:
GroupBy-ni qo'llashdan oldin, vaqt ajratib ma'lumotlaringizni tushuning va tegishli guruhlash mezonlari va agregatsiya/transformatsiya funktsiyalarini aniqlang. - To'g'ri Operatsiyani Tanlang: Analitik maqsadlaringiz uchun agregatsiya yoki transformatsiya mos tanlov ekanligini diqqat bilan ko'rib chiqing.
- Ishlash uchun Optimallashtiring: Katta ma'lumotlar to'plamlari uchun kodingizni vektorlashtirilgan operatsiyalardan foydalanish va keraksiz tsikllardan qochish orqali optimallashtirishni ko'rib chiqing.
- Yetishmayotgan Qiymatlarni Boshqaring: Ma'lumotlaringizdagi yetishmayotgan qiymatlardan xabardor bo'ling va ularni
fillna()yokidropna()kabi usullar yordamida tegishli tarzda hal qiling. - Kodingizni Hujjatlashtiring: Har bir
GroupByoperatsiyasining maqsadini va tanlovingizning asosini tushuntirish uchun kodingizni aniq hujjatlashtiring.
Xulosa
Pandas GroupBy - bu ma'lumotlarni tahlil qilish uchun kuchli vosita bo'lib, u sizga ma'lumotlaringizni segmentlash, har bir guruhga funktsiyalarni qo'llash va qimmatli tushunchalarni olish imkonini beradi. Agregatsiya va transformatsiya usullarini mukammal egallash orqali siz ma'lumotlaringizning to'liq imkoniyatlarini ochishingiz va asosiy naqsh va tendentsiyalarni chuqurroq tushunishingiz mumkin. Savdo ma'lumotlarini, sensor ko'rsatkichlarini yoki ijtimoiy media faoliyatini tahlil qilyapsizmi, GroupBy sizga ma'lumotlarga asoslangan qarorlar qabul qilishga va analitik maqsadlaringizga erishishga yordam beradi. GroupBy kuchini qabul qiling va ma'lumotlarni tahlil qilish ko'nikmalaringizni keyingi bosqichga ko'taring.
Ushbu qo'llanma Pandas GroupBy operatsiyalari haqida keng qamrovli ma'lumot berdi, asosiy e'tibor Agregatsiya va Transformatsiyaga qaratildi. Ushbu texnikalardan xalqaro ma'lumotlarda foydalanib, butun dunyo bo'ylab ma'lumotlar bo'yicha olimlar turli xil ma'lumotlar to'plamlaridan muhim biznes tushunchalarini olishlari mumkin. Pandasning to'liq imkoniyatlaridan foydalanish uchun ushbu texnikalarni amalda qo'llang, sinovdan o'tkazing va o'zingizning aniq ehtiyojlaringizga moslashtiring.